<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="style.css" type="text/css" media="all">
</head>
<body>
<h1>5. Полезности</h1>

<a name="modules_chpu"></a>

<h2>Предпрсмотр изображений (thumbs)</h2>
<div>
	<p>Для просмотра уменьшенной копии изображения, <b>находящегося на сервере с CMS</b>, можно
	использовать стандартный PHP-скрипт <i>~/thumbs.php</i>. Для удобства предусмотрено ЧПУ-правило:
	<i>example.com/<b>thumb_число-ширина_число-высота/адрес-изображения</b></i></p>
	
	<p>Пример: <i>example.com/thumb_50_40/images/70.jpg</i> - предпросмотр изображения <i>~/images/70.jpg</i>,
	ширина превью 50, высота - 40.</p>
	
	<p>Превью кешуруются на сервере в каталоге <i>~/images/thumbs</i> и на клиенте.</p>
</div>


<h2>Защита GET-запросов</h2>
<div>
	<p>Если пользователю доступно выполнение некоторого действия, например,
	голосование или удаление статьи, где параметры (id и т.д.) передаются через GET, то для
	предотвращения CSRF-атак рекомендуется пользоваться следующим приемом. К запросу добавлять GET-параметр
	с названием <i>scode</i>, значение которого - это сессионный защитный ключ пользователя (он передается
	в XML-таблице ответа модуля в значении атрибута <i>scode</i> тега <i>data</i>, см.
	<a href="modules/xml_responses.html">XML-таблицы ответов модулей</a>). Затем в вызываемом методе модуля
	добавить строчку <i>$this->expectSecureGET();</i> (желательно в начале метода). Теперь метод модуля
	стработает только при правильном значении GET-параметра <i>scode</i>.</p>

	<p>Обратите внимание, что таким образом следует защищать только GET-запросы, в результате которых
	выполняется удаление, добавление или изменение объектов (особенно это критично дейсвий в панели
	администратора).</p>
</div>

</body>
</html>